home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CD ROM Paradise Collection 4
/
CD ROM Paradise Collection 4 1995 Nov.iso
/
os2
/
adaptor.zip
/
ADAPT.ZIP
/
adaptor
/
examples
/
laplace
/
graphic.f
< prev
next >
Wrap
Text File
|
1993-09-28
|
2KB
|
62 lines
PROGRAM LAPLACE
REAL F(:,:), DF(:,:)
REAL HF(:,:)
INTEGER BILD (:,:), HOSTBILD(:,:)
cmf$ layout hostbild (:host)
LOGICAL CMASK (:,:)
INTEGER MAXX, MAXY
REAL FMAX
INTEGER ITER, K
c
c read in sizes
c
PRINT *,'MAXX = (z.B. 64) '
READ *,MAXX
PRINT *,'MAXY = (z.B. 64) '
READ *,MAXY
ALLOCATE (F(MAXX,MAXY), DF(1:MAXX,MAXY))
ALLOCATE (HF(MAXX,1:MAXY))
ALLOCATE (CMASK(MAXX,1:MAXY))
allocate (bild(maxx,maxy), hostbild(maxx,maxy))
call x_display_init (maxx, maxy)
C
CMASK = .FALSE.
CMASK (2:MAXX-1,2:MAXY-1) = .TRUE.
F = 2.
F(:,MAXY) = 1.
WHERE (CMASK)
F = 0.0
ENDWHERE
ITER = 0
FMAX = 1
DO WHILE (FMAX .gt. 0.001)
do k = 1, 10
ITER = ITER + 1
HF = CSHIFT (F,1,1)
DF = CSHIFT (F,1,-1)
HF = HF + DF
DF = CSHIFT (F,2,1)
HF = HF + DF
DF = CSHIFT (F,2,-1)
HF = (HF + DF) * 0.25
DF = 0
WHERE (CMASK)
DF = HF - F
F = F + DF
ENDWHERE
end do
bild = f * 128.0
hostbild = bild
call x_show_bild (hostbild)
DF = ABS(DF)
FMAX = MAXVAL (DF)
PRINT *,'Iteration ',ITER,' Max = ',FMAX
END DO
PRINT *, ITER, ' Iterationen benoetigt'
read *, iter
call x_display_exit ()
deallocate (hostbild, bild)
deallocate (cmask, hf, df, f)
END